// 一、数组排序
// 1.反转数组项顺序
// let arr=[1,2,3];
// arr.reverse();
// console.log(arr);//[ 3, 2, 1 ]

// 回文数
// let num="123454321";
// // 把字符串转成数组
// let arr=[...num];//[1,2,3,4,5]
// // 反转数组
// arr.reverse();//[5,4,3,2,1]
// // 数组转成字符串
// let str=arr.join("");//54321
// if(num==str){
//     console.log("是回文数！");
// }else{
//     console.log("不是回文数！");

// }


// 2.sort():排序
// JavaScript自定义方法
// let arr=[21,3,7,45,9,2];
// arr.sort(function(a,b){
//     if(a>b){
//         return -1;
//     }else if(a<b){
//         return 1;
//     }else{
//         return 0;
//     }
// });
// console.log(arr);//[ 2, 3, 7, 9, 21, 45 ]

// let arr2=[1,5,23,78,9,2];
// arr2.sort(function(x,y){
//     // return x-y;//升序
//     return y-x;//升序

// })
// console.log(arr2);


// 3.选择排序：数组中第一个位置所在的数字和后面每一个数字比大小，如果第一个数大于后面的某个数字，就交换位置
// 算法：解决问题的思路
// let arr2=[1,5,23,78,9,2];
// for(let i=0;i<arr2.length;i++){
//     for(let j=i+1;j<arr2.length;j++){
//         if(arr2[i]<arr2[j]){
//             // 两个变量交换值
//             // 方法一：解构数组
//             // [arr2[i],arr2[j]]=[arr2[j],arr2[i]]

//             // 方法二：中间变量
//             let temp=arr2[i];
//             arr2[i]=arr2[j];
//             arr2[j]=temp;
//         }
//     }
// }

// console.log(arr2);


// 4.冒泡排序：两个相邻数字之间进行比较，前面的数字大于后面的数字，就交换值
// 算法
// let arr=[1,5,23,78,9,2];//6

// for(let i=1;i<arr.length;i++){
//     for(let j=0;j<arr.length-i;j++){
//         if(arr[j]<arr[j+1]){
//             [arr[j],arr[j+1]]=[arr[j+1],arr[j]];


//         }

//     }
// }
// console.log(arr);


// 二、位置方法
// 1.indexOf():从数组左边查找（全等匹配）数组内容，找到就返回对应下标(找到第一个)，没找到就返回-1
// lastIndexOf():从数组右边查找（全等匹配）数组内容，找到就返回对应下标(找到第一个)，没找到就返回-1
// 该方法可以用在数组和字符串中
// let arr=[1,5,23,78,9,2,23];
// console.log(arr.indexOf(23));//2  
// console.log(arr.indexOf("9"));//-1
// console.log(arr.lastIndexOf(9));//4
// console.log(arr.lastIndexOf(23));//6

// 截取身份证号中的生日
// slice():该方法可以用在数组和字符串中
// let ID="513922199901011101";
// let year=ID.slice(6,10);
// console.log(year);

// let city="四川省成都市";
// let city2="黑龙江省齐齐哈尔市";
// console.log(city.slice(0,city.indexOf("省")));
// console.log(city2.slice(0,city2.indexOf("省")));
// console.log(city.slice(city.indexOf("省")+1,city.indexOf("市")));
// console.log(city2.slice(city2.indexOf("省")+1,city2.indexOf("市")));

// 2.includes():查看数组中是否包含某个内容(全等匹配)，如果包含就返回true，否则返回false
// let arr=[1,5,23,78,9,2,23];
// console.log(arr.includes(5));//true
// console.log(arr.includes("5"));//false


// 练习1：矩形（二维数组）对角线之和
// let arr=[
//     [12,4,2,5],//arr[0][0]   arr[0][3]
//     [3,7,1,9],//arr[1][1]    arr[1][2]
//     [4,6,5,2],//arr[2][2]    arr[2][1]
//     [9,2,4,7]//arr[3][3]     arr[3][0]
// ]
// let sum1=0;
// let sum2=0;
// for(let i=0;i<arr.length;i++){
//     for(let j=0;j<arr[i].length;j++){
//         // 求左上到右下角的对角线之和
//         if(i==j){
//             sum1+=arr[i][j];
//         }
//         // 求右上到左下角的对角线之和
//         if(i+j==3){
//             sum2+=arr[i][j];
//         }

//     }
// }

// console.log(sum1);
// console.log(sum2);


// 练习2：二维数组的转置
// let arr=[
//     [4,2,5],
//     [7,1,9],//arr[1][2]
//     [6,5,2],
//     [2,4,7]
// ]
// // [
// //     [4,7,6,2],
// //     [2,1,5,4],
// //     [5,9,2,7] //arr[2][1]
// // ]
// let newArr=[];//创建一个一维空数组
// // 遍历原二维数组里面的任意一个小数组的长度，根据小数组长度创建二维空数组
// for(let i=0;i<arr[0].length;i++){
//     newArr.push([]);
// }
// console.log(newArr);
// console.log(newArr[0]);//undefined[0]
// for(let i=0;i<arr.length;i++){
//     for(let j=0;j<arr[i].length;j++){
//         newArr[j][i]=arr[i][j];

//     }
// }
// console.log(newArr)


// 练习3：数组去重
// 使用选择排序的思路完成数组去重
// let arr=[12,12,5,7,2,4,5,2];//  结果[12,4,5,7,2]
// for(let i=0;i<arr.length;i++){
//     for(let j=i+1;j<arr.length;j++){
//         if(arr[i]==arr[j]){
//             arr.splice(j,1);
//             j--;

//         }
//     }
// }
// console.log(arr);

// 练习4：输入杨辉三角（正着打星星）
// 输入行数：6
//        1
//      1   1
//     1  2   1
//   1  3   3  1
//  1  4  6  4  1
// 1  5  10 10 5  1 

// [              i  j
//     [1],   arr[0][0]
//     [1,1],  arr[1][0]   arr[1][1]
//     [1,2,1],  arr[2][0]   arr[2][2] 
//     [1,3,3,1], arr[3][0]   arr[3][3]       i  j      i-1 j-1   i-1 j
//     [1,4,6,4,1],                     6=arr[4][2]=arr[3][1]+arr[3][2]
//     [1,5,10,10,5,1]                  10=arr[5][2]=arr[4][1]+arr[4][2]
// ]

// 难点：如何生产数字=>如何得到二维数组
// 1.当j==0 或者  i==j  取值 arr[i][j]=1
// 2.其他数字公式： arr[i][j]=arr[i-1][j-1]+arr[i-1][j]

let line = 6;
// 创建一个空数组用于存放数字
let arr = [];
// 根据行数创建一个二维空数组
// for(let i=0;i<line;i++){
//     arr.push([]);
// }
// console.log(arr);//[ [], [], [], [], [], [] ]
// // 外循环控制行数
// for(let i=0;i<line;i++){
//     // 生成二维数组里面的数字
//     for(let j=0;j<=i;j++){
//         if(i==j || j==0){
//             arr[i][j]=1
//         }else{
//             arr[i][j]=arr[i-1][j-1]+arr[i-1][j]
//         }
//     }

//     // 拼接空格
//     let space="";
//     for(let s=1;s<=line-i-1;s++){
//         space+=" ";
//     }
//     // 拼接数字
//     let str=arr[i].join(" ");

//     console.log(space+str);

// }

// console.log(Number(null));//0
// console.log(Number(undefined));//NaN
// console.log(null==0);//false


